add _gtk_entry_completion_resize_popup.
authorKristian Rietveld <kris@gtk.org>
Mon, 17 Nov 2003 22:02:21 +0000 (22:02 +0000)
committerKristian Rietveld <kristian@src.gnome.org>
Mon, 17 Nov 2003 22:02:21 +0000 (22:02 +0000)
Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>

* gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.

* gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
mapped, else resize_popup.

* gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
(_gtk_entry_completion_popup): moved all popup resizing code to
_gtk_entry_completion_resize_popup, and show the window when there
are more than zero items in the completion list again (sigh).

ChangeLog
ChangeLog.pre-2-10
ChangeLog.pre-2-4
ChangeLog.pre-2-6
ChangeLog.pre-2-8
gtk/gtkentry.c
gtk/gtkentrycompletion.c
gtk/gtkentryprivate.h

index da18bc60afe21606642cfd2d3567309366bafccc..e46c27ac34b3211e756df967583162edb41f1950 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,14 @@
-2003-11-17  Noah Levitt  <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>
 
-       * configure.in: Check for freetype headers the way freetype
-       wants us to.
+       * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+       * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+       mapped, else resize_popup.
+
+       * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+       (_gtk_entry_completion_popup): moved all popup resizing code to
+       _gtk_entry_completion_resize_popup, and show the window when there
+       are more than zero items in the completion list again (sigh).
 
 2003-11-17  Mark McLoughlin  <mark@skynet.ie>
 
index da18bc60afe21606642cfd2d3567309366bafccc..e46c27ac34b3211e756df967583162edb41f1950 100644 (file)
@@ -1,7 +1,14 @@
-2003-11-17  Noah Levitt  <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>
 
-       * configure.in: Check for freetype headers the way freetype
-       wants us to.
+       * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+       * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+       mapped, else resize_popup.
+
+       * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+       (_gtk_entry_completion_popup): moved all popup resizing code to
+       _gtk_entry_completion_resize_popup, and show the window when there
+       are more than zero items in the completion list again (sigh).
 
 2003-11-17  Mark McLoughlin  <mark@skynet.ie>
 
index da18bc60afe21606642cfd2d3567309366bafccc..e46c27ac34b3211e756df967583162edb41f1950 100644 (file)
@@ -1,7 +1,14 @@
-2003-11-17  Noah Levitt  <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>
 
-       * configure.in: Check for freetype headers the way freetype
-       wants us to.
+       * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+       * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+       mapped, else resize_popup.
+
+       * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+       (_gtk_entry_completion_popup): moved all popup resizing code to
+       _gtk_entry_completion_resize_popup, and show the window when there
+       are more than zero items in the completion list again (sigh).
 
 2003-11-17  Mark McLoughlin  <mark@skynet.ie>
 
index da18bc60afe21606642cfd2d3567309366bafccc..e46c27ac34b3211e756df967583162edb41f1950 100644 (file)
@@ -1,7 +1,14 @@
-2003-11-17  Noah Levitt  <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>
 
-       * configure.in: Check for freetype headers the way freetype
-       wants us to.
+       * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+       * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+       mapped, else resize_popup.
+
+       * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+       (_gtk_entry_completion_popup): moved all popup resizing code to
+       _gtk_entry_completion_resize_popup, and show the window when there
+       are more than zero items in the completion list again (sigh).
 
 2003-11-17  Mark McLoughlin  <mark@skynet.ie>
 
index da18bc60afe21606642cfd2d3567309366bafccc..e46c27ac34b3211e756df967583162edb41f1950 100644 (file)
@@ -1,7 +1,14 @@
-2003-11-17  Noah Levitt  <nlevitt@columbia.edu>
+Mon Nov 17 22:56:09 2003  Kristian Rietveld  <kris@gtk.org>
 
-       * configure.in: Check for freetype headers the way freetype
-       wants us to.
+       * gtk/gtkentryprivate.h: add _gtk_entry_completion_resize_popup.
+
+       * gtk/gtkentry.c (gtk_entry_completion_timeout): popup when not
+       mapped, else resize_popup.
+
+       * gtk/gtkentrycompletion.c (_gtk_entry_completion_resize_popup),
+       (_gtk_entry_completion_popup): moved all popup resizing code to
+       _gtk_entry_completion_resize_popup, and show the window when there
+       are more than zero items in the completion list again (sigh).
 
 2003-11-17  Mark McLoughlin  <mark@skynet.ie>
 
index 3e97af9f82abc95e5de4e256bb92071c71d11d2b..e9af2193731d94b846ee1c1eccd4b4f713cf0ac7 100644 (file)
@@ -4515,7 +4515,12 @@ gtk_entry_completion_timeout (gpointer data)
       actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL);
 
       if (matches > 0 || actions > 0)
-        _gtk_entry_completion_popup (completion);
+        {
+          if (! GTK_WIDGET_MAPPED (completion->priv->popup_window))
+            _gtk_entry_completion_popup (completion);
+          else
+            _gtk_entry_completion_resize_popup (completion);
+        }
     }
 
   GDK_THREADS_LEAVE ();
index a63277fb28d5d668b3eb5aeccb25373be1c03c3d..e131081ab75ee8058a598f345402b2235ba42bc5 100644 (file)
@@ -1029,20 +1029,12 @@ get_borders (GtkEntry *entry,
     }
 }
 
-/* this function is a bit nasty */
-void
-_gtk_entry_completion_popup (GtkEntryCompletion *completion)
+/* some nasty size requisition */
+gint
+_gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
 {
-  gint x, y, x_border, y_border;
-  gint items;
-  gint height;
-
-  if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
-    return;
-
-  gtk_widget_show_all (completion->priv->vbox);
+  gint items, height, x_border, y_border;
 
-  gdk_window_get_origin (completion->priv->entry->window, &x, &y);
   get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
 
   items = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
@@ -1052,13 +1044,15 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion)
   gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
                                       NULL, NULL, NULL, &height);
 
+  if (items <= 0)
+    gtk_widget_hide (completion->priv->scrolled_window);
+  else
+    gtk_widget_show (completion->priv->scrolled_window);
+
   gtk_widget_set_size_request (completion->priv->tree_view,
                                completion->priv->entry->allocation.width - 2 * x_border,
                                items * height);
 
-  if (items <= 0)
-    gtk_widget_hide (completion->priv->scrolled_window);
-
   /* default on no match */
   completion->priv->current_selected = -1;
 
@@ -1075,9 +1069,28 @@ _gtk_entry_completion_popup (GtkEntryCompletion *completion)
                                    items * height);
     }
 
+  return height;
+}
+
+void
+_gtk_entry_completion_popup (GtkEntryCompletion *completion)
+{
+  gint x, y, x_border, y_border;
+  gint height;
+
+  if (GTK_WIDGET_MAPPED (completion->priv->popup_window))
+    return;
+
+  gtk_widget_show_all (completion->priv->vbox);
+
+  gdk_window_get_origin (completion->priv->entry->window, &x, &y);
+  get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
+
   x += x_border;
   y += 2 * y_border;
 
+  height = _gtk_entry_completion_resize_popup (completion);
+
   gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y + height);
 
   gtk_widget_show (completion->priv->popup_window);
index 657595e5a8c2d85f37812b0d50fa3d026c48dffd..a4dd011551911c341b797d2f85cd7468821c4c2e 100644 (file)
@@ -58,6 +58,7 @@ struct _GtkEntryCompletionPrivate
   gulong key_press_id;
 };
 
+gint                _gtk_entry_completion_resize_popup           (GtkEntryCompletion          *completion);
 void                _gtk_entry_completion_popup                  (GtkEntryCompletion          *completion);
 void                _gtk_entry_completion_popdown                (GtkEntryCompletion          *completion);